package com.len.config;

import cn.hutool.core.util.StrUtil;
import com.mybatisflex.core.datasource.DataSourceShardingStrategy;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;

/**
 * 读写分离 功能集成
 */
@Configuration
public class Strategy implements DataSourceShardingStrategy {

    public String doSharding(String currentDataSourceKey
            , Object mapper, Method mapperMethod, Object[] methodArgs){


        // 如果 mapper 的方法属于 增删改，使用 master 数据源
        if (StrUtil.startWithAny(mapperMethod.getName(),
                "insert", "delete", "update")){
            return "db1";
        }

        //其他场景，使用 slave1 或者 slave2 进行负载均衡
        return "db2";
    }
}
